package br.com.dojo.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

@Entity
public class Locacao implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Long idLocacao;
	
	@ManyToOne
	@JoinColumn(name="CLiente_idCliente")
	private Cliente cliente;
	
	private Date dataRetirada;
	
	private Date dataDevolucao;
	
	private Float multa;
	
	private Date dataPrevisaoDevolucao;
	
	@ManyToMany
	@JoinTable ( name ="LocacaoServico",
		joinColumns = @JoinColumn ( name ="Locacao_idLocacao") ,
		inverseJoinColumns = @JoinColumn ( name ="Servico_codigo") )
	private List<Servico> servicos;
	
	@OneToMany(mappedBy="locacao")
	private List<Fatura> faturas;
	
	@ManyToMany
	@JoinTable ( name ="LocacaoCarro",
		joinColumns = @JoinColumn ( name ="Locacao_idLocacao") ,
		inverseJoinColumns = @JoinColumn ( name ="Carro_placa"))
	private List<Carro> carros;

	

	public Long getIdLocacao() {
		return this.idLocacao;
	}

	public void setIdLocacao(Long idLocacao) {
		this.idLocacao = idLocacao;
	}

	public Date getDataRetirada() {
		return this.dataRetirada;
	}

	public void setDataRetirada(Date dataRetirada) {
		this.dataRetirada = dataRetirada;
	}

	public Date getDataDevolucao() {
		return this.dataDevolucao;
	}

	public void setDataDevolucao(Date dataDevolucao) {
		this.dataDevolucao = dataDevolucao;
	}

	public Float getMulta() {
		return this.multa;
	}

	public void setMulta(Float multa) {
		this.multa = multa;
	}

	public Date getDataPrevisaoDevolucao() {
		return this.dataPrevisaoDevolucao;
	}

	public void setDataPrevisaoDevolucao(Date dataPrevisaoDevolucao) {
		this.dataPrevisaoDevolucao = dataPrevisaoDevolucao;
	}

	public List<Servico> getServicos() {
		return this.servicos;
	}

	public void setServicos(List<Servico> servicos) {
		this.servicos = servicos;
	}

	public List<Fatura> getFaturas() {
		return this.faturas;
	}

	public void setFaturas(List<Fatura> faturas) {
		this.faturas = faturas;
	}

	public List<Carro> getCarros() {
		return this.carros;
	}

	public void setCarros(List<Carro> carros) {
		this.carros = carros;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

}
